把一組相關變數/常數和函式組織在一起的程式碼叫做「類別(class)」 也被稱為「程式物件的規劃藍圖」。類別裡的變數稱為「屬性」、函式則叫做「方法(method)」。
類別裡有兩種特殊的變數類型
1.類別變數:也稱為靜態變數,保存所有物件共用資料,像「單價」和「銷售總數」,用"類別.變數名稱"格式讀取。
2.實體變數:保存物件自己的資料,像「數量」和「是否加辣」。宣告時,名稱前面要加上 self.(代表「物件自己的」意思)。
類別程式的結構:
class 類別名稱:
類別變數
def __init__(self):
self.實體變數
def 方法名稱(self):
self.實體變數
例:
class Order():
total = 0
price = 35
def __init__(self, amount=1, spicy=False):
self.amount = amount
selt.spicy = spicy
Order.total += amount
def check(self):
sum = Order. price * self.amount
sauce = '加醬' if self.spicy else '不加醬'
print(f'{self.amount}個肉圓{sauce},共
{sum}元。')
執行測試:
>>> from shop import Order
>>> order1 = Order (3, True)
>>> order2 = Order (2)
>>> order1.check()
3個肉圓加醬,共105元。
>>> Order.total
5
屬性的存取權限:
Python使用底線來區分,底線加在最前面
沒有底線:代表公有的(public),可供類別外部程式自由存取。
一個底線:代表受保護的(protected),僅供類別內部或者擴充此類別的程式存取。
兩個底線:代表私有的(private),僅限類別內部程式存取